﻿// ***********************************************************************
// Assembly         : AccesoDatos
// Author           : Diego
// Created          : 03-02-2014
//
// Last Modified By : Diego
// Last Modified On : 03-02-2014
// ***********************************************************************
// <copyright file="AD_Estado_Cliente.cs" company="">
//     Copyright (c) . All rights reserved.
// </copyright>
// <summary></summary>
// ***********************************************************************
using Modelado.Modulos.ClasesModelado;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

/// <summary>
/// The ClasesAccesoDatos namespace.
/// </summary>
namespace AccesoDatos.Modulos.ClasesAccesoDatos
{
    /// <summary>
    /// Class AD_Estado_Cliente.
    /// </summary>
   public class AD_Estado_Cliente
    {

       //crear EST_CLIENTE
        /// <summary>
        /// Crs the e_ estado_ cliente.
        /// </summary>
        /// <param name="comando">The comando.</param>
        /// <param name="obj">The object.</param>
       public void CRE_Estado_Cliente(SqlCommand comando, MOD_Estado_Cliente obj)
        {
            try
            {
                string sp = "SP_CRE_Estado_Cliente";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();


                comando.Parameters.Add(new SqlParameter("@ESTCLI_NOMBRE", SqlDbType.VarChar));
                     
                comando.Parameters[0].Value = obj.ESTCLI_nombre;
               
              
                comando.ExecuteNonQuery();


            }
            catch (Exception exc)
            {
                throw exc;
            }
        }
       //eliminar estado cliente
       /// <summary>
       /// Des the l_ estado_ cliente.
       /// </summary>
       /// <param name="comando">The comando.</param>
       /// <param name="codigo">The codigo.</param>
       public void DEL_Estado_Cliente(SqlCommand comando, int codigo)
       {
           try
           {
               string sp = "SP_DEL_Estado_Cliente";

               comando.CommandType = CommandType.StoredProcedure;
               comando.CommandText = sp;
               comando.Parameters.Clear();


               comando.Parameters.Add(new SqlParameter("@ESTCLI_CODESTADO", SqlDbType.Int));

               comando.Parameters[0].Value = codigo;

               comando.ExecuteNonQuery();


           }
           catch (Exception exc)
           {
               throw exc;
           }
       }
       //actualiza cliente
       /// <summary>
       /// Ups the d_ estado_ cliente.
       /// </summary>
       /// <param name="comando">The comando.</param>
       /// <param name="obj">The object.</param>
       public void UPD_Estado_Cliente(SqlCommand comando, MOD_Estado_Cliente obj)
       {
           try
           {
               string sp = "SP_UPD_Estado_Cliente";

               comando.CommandType = CommandType.StoredProcedure;
               comando.CommandText = sp;
               comando.Parameters.Clear();

               comando.Parameters.Add(new SqlParameter("@ESTCLI_CODESTADO", SqlDbType.Int));
               comando.Parameters.Add(new SqlParameter("@ESTCLI_NOMBRE", SqlDbType.VarChar));
               
               comando.Parameters[0].Value = obj.ESTCLI_codestado;
               comando.Parameters[1].Value = obj.ESTCLI_nombre;
               
               comando.ExecuteNonQuery();

           }
           catch (Exception exc)
           {
               throw exc;
           }
       }
       //listado estado cliente en el grid
       /// <summary>
       /// Ses the l_ grid_ estado_ cliente.
       /// </summary>
       /// <param name="comando">The comando.</param>
       /// <returns>List{MOD_Estado_Cliente}.</returns>
       public List<MOD_Estado_Cliente> SEL_Grid_Estado_Cliente(SqlCommand comando)
       {
           try
           {
               string sp = "SP_SEL_Grid_Estado_Cliente";

               comando.CommandType = CommandType.StoredProcedure;
               comando.CommandText = sp;
               comando.Parameters.Clear();

               IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
               DataSet ds = new DataSet();
               da.Fill(ds);

               DataTable dt = ds.Tables[0];
               List<MOD_Estado_Cliente> lista = new List<MOD_Estado_Cliente>();

               for (int i = 0; i < dt.Rows.Count; i++)
               {
                   MOD_Estado_Cliente obj = new MOD_Estado_Cliente();
                   obj.ESTCLI_codestado= Convert.ToInt32(dt.Rows[i]["ESTCLI_CODESTADO"]);
                   obj.ESTCLI_nombre = dt.Rows[i]["ESTCLI_NOMBRE"].ToString();
                   
                   lista.Add(obj);
               }

               return lista;

           }
           catch (Exception exc)
           {
               throw exc;
           }
       }
       //trae info de estado Cliente para editar
       /// <summary>
       /// Ses the l_ estado_ cliente by identifier.
       /// </summary>
       /// <param name="comando">The comando.</param>
       /// <param name="ESTCLI_CODESTADO">The estcl i_ codestado.</param>
       /// <returns>MOD_Estado_Cliente.</returns>
       public MOD_Estado_Cliente SEL_Estado_ClienteByID(SqlCommand comando, int ESTCLI_CODESTADO)
       {
           try
           {
               string sp = "SP_SEL_Estado_ClienteByID";

               comando.CommandType = CommandType.StoredProcedure;
               comando.CommandText = sp;
               comando.Parameters.Clear();

               comando.Parameters.Add(new SqlParameter("@ESTCLI_CODESTADO", SqlDbType.Int));


               comando.Parameters[0].Value = ESTCLI_CODESTADO;


               IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
               DataSet ds = new DataSet();
               da.Fill(ds);

               DataTable dt = ds.Tables[0];
               MOD_Estado_Cliente obj = new MOD_Estado_Cliente();

               for (int i = 0; i < dt.Rows.Count; i++)
               {
                   obj.ESTCLI_codestado = Convert.ToInt32(dt.Rows[i]["ESTCLI_CODESTADO"]);
                   obj.ESTCLI_nombre = dt.Rows[i]["ESTCLI_NOMBRE"].ToString();
                   
               }

               return obj;


           }
           catch (Exception exc)
           {
               throw exc;
           }
       }
       //selecciona estado cliente valida o cuenta por nombre
       /// <summary>
       /// Ses the l_ estado_ cliente by nombre.
       /// </summary>
       /// <param name="comando">The comando.</param>
       /// <param name="EST_CLI_NOMBRE">The es t_ cl i_ nombre.</param>
       /// <returns>System.Int32.</returns>
       public int SEL_Estado_ClienteByNombre(SqlCommand comando, string EST_CLI_NOMBRE)
       {
           try
           {
               string sp = "SP_SEL_Estado_ClienteByNombre";
               int cant_est= 0;
               comando.CommandType = CommandType.StoredProcedure;
               comando.CommandText = sp;
               comando.Parameters.Clear();

               comando.Parameters.Add(new SqlParameter("@ESTCLI_NOMBRE", SqlDbType.VarChar));


               comando.Parameters[0].Value = EST_CLI_NOMBRE;


               IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
               DataSet ds = new DataSet();
               da.Fill(ds);

               DataTable dt = ds.Tables[0];
               MOD_Estado_Cliente obj = new MOD_Estado_Cliente();

               for (int i = 0; i < dt.Rows.Count; i++)
               {
                   cant_est = Convert.ToInt32(dt.Rows[i]["EST_CLI_CANT"]);


               }

               return cant_est;


           }
           catch (Exception exc)
           {
               throw exc;
           }
       }

   }
}
